﻿We@{
    // 공유할 사용자
    int userId = UrlData[1].AsInt();

    // 공유할 사용자 개체
    var user = UserHelper.GetUser(userId);

    var calendar = Page.Calendar;

    if (user == null) {
        RequestData.SetValue("InfoPaneTitle", "해당 이름의 사용자가 존재하지 않습니다.");
    } else if (user.Email == UserHelper.CurrentUser.Email) {
        ModelState.AddError("username", "사용자 자신의 공유 설정을 수정할 수 없습니다.");
    }

    // 사용자가 이미 이 달력에 대한 권한을 가지고 있는지 확인해야 합니다.
    var userCalendarInfo = Calendar.GetUserCalendar(userId, calendar.CalendarId);
    if (userCalendarInfo == null) {
        RequestData.SetValue("InfoPaneTitle", "잘못된 달력 사용자 쌍");
        return;
    }

    RequestData.SetValue("InfoPaneTitle", "편집할 사용자 '" + user.Email + "' 대상 달력 '" + userCalendarInfo.Name + "'");

    if (IsPost) {
        // 권한을 변경하는 중입니다. 특수한 경우로,
        // 권한이 0인 경우 제거하라는 의미입니다. 기본값은 -1까지이므로
        // 0으로 간주되지 않습니다(권한 없음).
        Permission? permission = Request["permission"].As<Permission?>();

        if (!permission.HasValue) {
            ModelState.AddError("permission", "유효한 권한 수준을 지정해야 합니다.");
        }

        if (ModelState.IsValid) {
            Sharing.EditShareCalendar(calendar.CalendarId, WebSecurity.GetUserId(user.Email), permission.Value);
            Response.Redirect("~/Calendar/Share/View/" + calendar.CalendarId);
        }
    }
}
@Html.ValidationSummary()
<form method="post" action="">
    <table class="info">
        <tr>
            <th scope="col">사용자 이름</th>
            <th scope="col">권한 수준</th>
        </tr>
        <tr>
            <td>
                <label>
                    <span style="margin-right: 10px;">Add A User:</span>
                    <input type="text" name="username" value="@user.Email" />
                </label>
            </td>
            <td>
                <select name="permission">
                    @foreach (var level in Enum.GetValues(typeof(Permission))) {
                        <option value="@((int)level)" @((int)level == userCalendarInfo.Permissions ? " selected=\"selected\"" : "")>@level</option>
                    }
                </select>
            </td>
        </tr>
        <tr>
            <td class="center" colspan="2">
                <input type="submit" value="Save" />
            </td>
        </tr>
    </table>
</form>

